ヘッダーをスキップ
Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド
リリース6.0
B25773-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

キャッシュ表属性

この項では、次のキャッシュ表属性について説明します。

UNIQUE HASH ON

UNIQUE HASH ON属性は、すべてのタイプのキャッシュ・グループに対して使用できます。

UNIQUE HASH ONによって、主キーのハッシュ・ページ数を設定できます。これはCREATE TABLE文で使用される句と同じです。詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のCREATE TABLEに関する項を参照してください。

PROPAGATE

PROPAGATE属性は、USERMANAGEDキャッシュ・グループでのみ使用します。ただし、ここで説明する伝播動作は、SYNCHRONOUS WRITETHROUGH(SWT)キャッシュ・グループの動作に類似しています。

PROPAGATEは、TimesTenキャッシュ・グループの表に対する変更が、対応するOracle表にコミット時に自動的に伝播されるように指定します。NOT PROPAGATEは、伝播を無効にします。

キャッシュされた表がPROPAGATE属性で定義されている場合、キャッシュされた表に対して行われた更新は、TimesTenのコミット処理中にOracleに伝播されます。これは、次の同期方法で実行されます。

  1. 最初に、Oracleでコミットが試行されます。Oracleでコミットが失敗すると、TimesTenでコミットは試行されず、TimesTenトランザクションはロールバックの必要があるものとしてマークされます。これによって、Oracleデータベースでのデータ更新の見落しがなくなります。
  2. Oracleでコミットが成功すると、TimesTenでコミットが試行されます。TimesTenでコミットが失敗すると、失敗の原因を示すTimesTenエラー・メッセージがユーザーに返されます。

アプリケーション・ユーザーのかわりにOracleに接続すると、コミットが実行されます。ユーザーのOracleログインおよびパスワードは、UIDおよびOraclePWD属性を使用して、DSNまたはTimesTenの接続文字列に指定する必要があります(「キャッシュされた表のDSN定義」を参照)。

コミットをOracleに伝播するには、次の要件が満たされている必要があります。

この要件では、TimesTenで更新中の行とOracleでのそれらに対応する元の行との間に1対1のマッピングが確立されていることを確認することが目的です。この1対1のマッピングが確立されている場合は、キャッシュされていない行に与える影響を心配せずに、更新を適用できます。

注意: アプリケーションで長さ0(ゼロ)のVARCHARまたはCHAR値をOracleにコミットすると、OracleはこれをNULL値として解釈します。

デフォルトでは、キャッシュ・グループ表はNOT PROPAGATE属性が指定されて作成されるため、表に対する更新はOracleに伝播されません。PROPAGATEが有効になっている場合、Oracleに対してコミットする必要がない変更を、キャッシュされた表に対して行う必要があることもあります。たとえば、キャッシュされた表にPROPAGATEが設定されていて、アプリケーションがこの表をOracleの最新データでリフレッシュするとします。アプリケーションは、キャッシュされた表からすべての行を削除した後、その表にOracleの最新データを再挿入できます。この方法の問題点は、削除のリクエストがOracleにも伝播され、Oracleから行が削除されてしまうことです。この問題を回避するには、アプリケーションで組込みプロシージャttCachePropagateFlagSetをコールして伝播を無効にし、伝播を後で再度有効にします。

伝播が無効になっている場合は、FLUSH CACHE GROUP文を使用して、Oracleに対する挿入および更新を選択的に伝播できます(「USERMANAGEDキャッシュ・グループのフラッシュ」を参照)。

PROPAGATEを使用する場合は、次の制限が適用されます。

注意: 表にPROPAGATE属性が指定されているキャッシュ・グループの場合、TimesTenは、この表に対する挿入および更新と、キャッシュ・グループ定義の一部であるWHERE句に一貫性があるかどうかを確認しません。このような挿入および更新は回避されず、Oracleに伝播される場合もあります。

PROPAGATEを使用する表定義の例は、例2.11を参照してください。

READONLY

READONLY属性は、USERMANAGEDキャッシュ・グループでのみ使用します。

注意: READONLY表属性とREADONLYキャッシュ・グループ・タイプを混同しないでください。

READONLY表属性を各キャッシュ表に対して指定して、TimesTenアプリケーションがその表を更新することを禁止できます。

READONLYを使用する場合は、次の制限が適用されます。

PassThrough=2を設定したREADONLY表を使用する場合の特別な考慮事項については、「パススルー・レベルの設定」を参照してください。